#!/usr/bin/python
# -*- coding:utf-8 -*-
# @author  : micah
# @time    :  
# @function: 
# @version :


"""
目前为止：
    实例方法 self
    静态方法 无

"""


class Father:
    @classmethod  # 装饰器
    def print_info(cls):
        print('我是一个类方法')


"""
类方法中的第一个参数名称为：cls
"""


class Tools:
    tools_num = 0  # 类属性

    def __init__(self, name):
        self.name = name
        # 在实例化的过程中对类属性自增1
        Tools.tools_num += 1

    # 实例方法
    def sum_tool_num_1(self):
        # 类属性可以被类对象和实例对象访问
        print('工具总数为：', self.tools_num)

    # 类方法
    @classmethod
    def sum_tool_num_2(cls):  # cls接收的是类对象：Tools类名
        print('工具总数为：', cls.tools_num)


tieqiao = Tools('铁锹')
chutou = Tools('锄头')
banshuo = Tools('板手')

# 多个实例对象可以同时访问类属性
print(tieqiao.tools_num)
print(chutou.tools_num)
print(banshuo.tools_num)

tieqiao.sum_tool_num_1()  # 实例方法

Tools.sum_tool_num_2()  # 类方法 改成实例对象调用也没有问题

"""
1.类方法可以使用@classmethod创建
2.类方法第一个参数为类对象

如果一个方法无需访问任何属性，可以使用静态方法
如果一个方法需要访问一个类属性，那么使用类方法

必须要通过类名
"""
